#include <bits/stdc++.h>
using namespace std;

int main()
{
	int n, m; cin >> n >> m;
	priority_queue<int, vector<int>, greater<int>> heap;
	for(int i = 1;i <= m;i ++) heap.push(0);
	int ans = 0;
	for(int i = 1;i <= n;i ++)
	{
		int x; cin >> x;
		int t = heap.top(); heap.pop();
		t += x;
		heap.push(t);
		ans = max(ans, t);
	}
	cout << ans << endl;
	return 0;
}



// #include <bits/stdc++.h>
// using namespace std;
// typedef long long LL;
// const int N = 1e4 + 10;

// int n, m;
// int a[N];

// int main()
// {
// 	cin >> n >> m;
// 	for(int i = 1;i <= n;i ++) cin >> a[i];
// 	int pos = m + 1, ans = 0;
// 	while(pos < n + 1)
// 	{
// 		int x = 200;
// 		for(int i = 1;i <= m;i ++) x = min(x, a[i]);
// 		for(int i = 1;i <= m;i ++)
// 		{
// 			a[i] -= x;
// 			if(a[i] == 0) a[i] = a[pos ++];
// 		}
// 		ans += x;
// 	}
// 	int x = 0;
// 	for(int i = 0;i <= m;i ++) x = max(x, a[i]);
// 	cout << ans + x << endl;

// 	return 0;
// }